Make gtk_combo_box_text_get_active_text() behave as documented
authorMatthias Clasen <mclasen@redhat.com>
Sat, 19 Feb 2011 18:27:51 +0000 (13:27 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 19 Feb 2011 18:27:51 +0000 (13:27 -0500)
If there is an entry, it is supposed to return the contents
of the entry. Pointed out by Allin Cottrell,
https://bugzilla.gnome.org/show_bug.cgi?id=642681

gtk/gtkcomboboxtext.c

index ba6c0511797b0e05cfb1155b451f6680755fa79e..f1102cb1af65499cfb1ad1fe983aff9b28ab3d79 100644 (file)
@@ -563,12 +563,13 @@ gtk_combo_box_text_remove_all (GtkComboBoxText *combo_box)
  * gtk_combo_box_text_get_active_text:
  * @combo_box: A #GtkComboBoxText
  *
- * Returns the currently active string in @combo_box, or %NULL if none
- * is selected. If @combo_box contains an entry, this function will return
- * its contents (which will not necessarily be an item from the list).
+ * Returns the currently active string in @combo_box, or %NULL
+ * if none is selected. If @combo_box contains an entry, this
+ * function will return its contents (which will not necessarily
+ * be an item from the list).
  *
- * Returns: a newly allocated string containing the currently active text.
- *     Must be freed with g_free().
+ * Returns: a newly allocated string containing the currently
+ *     active text. Must be freed with g_free().
  *
  * Since: 2.24
  */
@@ -580,7 +581,14 @@ gtk_combo_box_text_get_active_text (GtkComboBoxText *combo_box)
 
   g_return_val_if_fail (GTK_IS_COMBO_BOX_TEXT (combo_box), NULL);
 
-  if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo_box), &iter))
+ if (gtk_combo_box_get_has_entry (GTK_COMBO_BOX (combo_box)))
+   {
+     GtkWidget *entry;
+
+     entry = gtk_bin_get_child (GTK_BIN (combo_box));
+     text = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
+   }
+  else if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo_box), &iter))
     {
       GtkTreeModel *model;
       gint text_column;